During the design of a system, such as a hardware or a software system, simulation is a tool that allows a developer to determine whether the subsequently developed system is likely to operate correctly, even before its constituent modules have been completely developed. If it is possible to perform simulation during an early design phase of a project, it may be possible to verify whether or not all the requirements of execution of the project will likely be satisfied even before the system has been developed. As a result, there are likely to be fewer design changes to the system once it has been implemented.
One type of simulation model that is utilized within the prior art is referred to as a timed-functional model. In this model, the individual sections or modules of a system do not have to be completely developed. Instead, the timed-functional model focuses on the time it takes to process these individual modules, and on communication with the other modules of the system, to evaluate throughput, resource utilization rates, and so on. The time it takes to process each module is determined by hardware or software, using appropriately mapped functions. Simulation code of this type may be written by a developer, or it may be generated by converting the design of a system using a diagram coded in a modeling language like the Universal Modeling Language (UML). Such simulation models can be realized within simulation systems including SystemC, available on the Internet at www.systemc.org, SpecC, described on the Internet at www.specc.gr.jp/eng/index.htm, and SimJava, available on the Internet at www.dcs.ed.ac.uk/home/hase/simjava/.
When a timed-functional model of a system having a number of models is actually mapped into software, the system can be mapped to multi-tasking software. However, existing simulation systems assume that modules of a system to be simulated are to be executed in parallel with one another. However, where such modules cannot be executed at the same time in actuality, such simulation will not accurately reflect the operation of the system once it is constructed. Other types of existing simulation systems allow for the modules of a system to be simulated to be executed in a non-parallel manner with respect to one another, but they always force a lower-priority task to halt processing when a higher-priority task is to be executed, which means that preemptive scheduling cannot be provided for in such systems.
For these and other reasons, therefore, there is a need for the present invention.